/************************************************************************
 * File: bag.cpp                                                        *
 *                                                                      *
 * Copyright 2006, 2008 Colin Kern (colin.kern@gmail.com)               *
 *                                                                      *
 * This file is part of Profit.  Some previous versions were released   *
 * under the names Megacorp Mania and Acquire.                          *
 *                                                                      *
 * Profit is free software: you can redistribute it and/or modify       *
 * it under the terms of the GNU General Public License as published by *
 * the Free Software Foundation, either version 3 of the License, or    *
 * any later version.                                                   *
 *                                                                      *
 * Profit is distributed in the hope that it will be useful,            *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
 * GNU General Public License for more details.                         *
 *                                                                      *
 * You should have received a copy of the GNU General Public License    *
 * along with Profit.  If not, see <http://www.gnu.org/licenses/>.      *
 ************************************************************************/
#include "bag.h"
#include "tile.h"

Bag::Bag(int rows, int columns)
{
    reset(rows, columns);
}

Tile Bag::draw()
{
	int n = qrand() % m_tiles.size();
	Tile tile = m_tiles.at(n);
	m_tiles.removeAt(n);
	
	return tile;
}

void Bag::reset(int rows, int columns )
{
    m_tiles.clear();
    
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < columns; ++j) {
            m_tiles.append(Tile(i, j)); 
        } 
    } 
}

bool Bag::isEmpty( ) const
{
    return m_tiles.empty();
}
